package org.jeecg.modules.asset.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.ChangeLog;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description: 空间资产台账
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class SpaceAssetEntity implements Serializable {
    private static final long serialVersionUID = 1L;

	/**资产编码*/
	@Excel(name = "资产编码", width = 15, groupName = "基本信息")
    @ApiModelProperty(value = "资产编码")
    private String assetCode;
	/**资产名称*/
	@Excel(name = "资产名称", width = 15, groupName = "基本信息")
    @ApiModelProperty(value = "资产名称")
    private String assetName;

	/**资产类型*/
	@Excel(name = "资产类型", width = 15, dicCode = "asset_all_code", groupName = "基本信息")
	@Dict(dicCode = "asset_all_code")
	@ApiModelProperty(value = "资产类型")
	private java.lang.String assetType;

	@Excel(name = "空间类型", width = 15, dicCode = "space_type", groupName = "基本信息")
	@Dict(dicCode = "space_type")
    @ApiModelProperty(value = "空间类型（大分类，如：商业经营用房、行政办公用房、生活配套用房）")
    private String spaceType;
	/**空间子类（二级分类，如：商务、教育、医疗、公寓、公建）*/
	@Excel(name = "空间子类", width = 15, dicCode = "space_subtype", groupName = "基本信息")
	@Dict(dicCode = "space_subtype")
    @ApiModelProperty(value = "空间子类（二级分类，如：商务、教育、医疗、公寓、公建）")
    private String spaceSubtype;
	/**所属资产*/
	@Excel(name = "所属资产", width = 15, dicCode = "belong_asset", groupName = "基本信息")
	@Dict(dicCode = "belong_asset")
	@ApiModelProperty(value = "所属资产")
	private String belongAsset;
	/**所属公司*/
	@Excel(name = "所属公司", width = 15,dicCode = "asset_company", groupName = "基本信息")
	@Dict(dicCode = "asset_company")
	private String company;
	/**详细地址 / 存放位置*/
	@Excel(name = "详细地址", width = 15, groupName = "基本信息")
	@ApiModelProperty(value = "详细地址（地理位置描述，如：XX市XX区XX路XX号）")
	private String place;
	/**资产状态（如：自用、出租、闲置、待租、装修中、已停用）*/
	@Excel(name = "资产状态", width = 15, dicCode = "all_asset_status", groupName = "基本信息")
	@Dict(dicCode = "all_asset_status")
	@ApiModelProperty(value = "资产状态（如：自用、出租、闲置、待租、装修中、已停用）")
	private String status;
	/**负责人*/
	@Excel(name = "负责人", width = 15, groupName = "基本信息")
	@ApiModelProperty(value = "负责人")
	private String chargePerson;
	/**不动产权力人*/
	@Excel(name = "不动产权力人", width = 15, groupName = "基本信息")
	@ApiModelProperty(value = "不动产权力人")
	private String remainderman;
	/**负责人联系电话*/
	@Excel(name = "联系电话", width = 15, groupName = "基本信息")
	@ApiModelProperty(value = "联系电话")
	private String chargeMobile;



	/**建筑面积（单位：㎡，保留2位小数）*/
	@Excel(name = "建筑面积（㎡）", width = 15, groupName = "物理属性")
	@ApiModelProperty(value = "建筑面积（单位：㎡，保留2位小数）")
	private BigDecimal buildingArea;
	/**可租面积（单位：㎡，保留2位小数）*/
	@Excel(name = "可租面积（㎡）", width = 15, groupName = "物理属性")
	@ApiModelProperty(value = "可租面积（单位：㎡，保留2位小数）")
	private BigDecimal rentableArea;
	/**楼层信息（如：地上19层，地下1层）*/
	@Excel(name = "楼层信息（如：地上19层，地下1层）", width = 15, groupName = "物理属性")
	@ApiModelProperty(value = "楼层信息（如：地上19层，地下1层）")
	private String floorInfo;
	/**建成日期（建筑物建成日期）*/
	@Excel(name = "建成日期", width = 15, format = "yyyy-MM-dd", groupName = "物理属性")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern="yyyy-MM-dd")
	@ApiModelProperty(value = "建成日期（建筑物建成日期）")
	private Date completionYear;
	/**停车位数量（配套总数，非负整数）*/
	@Excel(name = "停车位数量", width = 15, groupName = "物理属性")
	@ApiModelProperty(value = "停车位数量（配套总数，非负整数）")
	private Integer parkingNum;
	/**电梯数量（如：客梯6部，货梯1部）*/
	@Excel(name = "电梯数量", width = 15, groupName = "物理属性")
	@ApiModelProperty(value = "电梯数量（如：客梯6部，货梯1部）")
	private String elevatorNum;
	/**配套设施（周边/内部设施描述，如：自带商超、24h安保）*/
	@Excel(name = "配套设施", width = 15, groupName = "物理属性")
	@ApiModelProperty(value = "配套设施（周边/内部设施描述，如：自带商超、24h安保）")
	private String supportFacility;



	/**权属主体（资产所有权归属方，如：XX公司、XX单位）*/
	@Excel(name = "权属主体", width = 15, groupName = "价值和权属")
	private String ownershipSubject;
	/**取得方式（如：自建、购置、划拨）*/
	@Excel(name = "取得方式", width = 15, dicCode = "acquisition_method", groupName = "价值和权属")
	@Dict(dicCode = "acquisition_method")
	private String acquisitionMethod;
	/**账面原值（原始成本，单位：元，保留2位小数）*/
	@Excel(name = "账面原值（元）", width = 15, groupName = "价值和权属")
	private BigDecimal bookOriginalValue;
	/**账面净值（当前财务净值，单位：元，保留2位小数）*/
	@Excel(name = "账面净值（元）", width = 15, groupName = "价值和权属")
	private BigDecimal bookNetValue;
	/**折旧起始年月*/
	@Excel(name = "折旧起始年月", width = 15, format = "yyyy-MM-dd", groupName = "价值和权属")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern="yyyy-MM-dd")
	private Date depreciationStartDate;
	/**月折旧额（元）*/
	@Excel(name = "月折旧额（元）", width = 15, groupName = "价值和权属")
	private BigDecimal monthDepreciationFee;
	/**权证办理状态（如：已办理、办理中、未办理）*/
	@Excel(name = "权证办理状态", width = 15, dicCode = "certificate_status", groupName = "价值和权属")
	@Dict(dicCode = "certificate_status")
	private String certificateStatus;
	/**资产类型*/
//	@Excel(name = "资产类型", width = 15, dicCode = "asset_type_space", groupName = "价值和权属")
//	@Dict(dicCode = "asset_type_space")
//	private Integer isFixedAsset;



	/**经营单位（实际经营/使用单位）*/
	@Excel(name = "经营单位", width = 15, groupName = "经营状况")
	private String operationUnit;
	/**可否对外招租（1-否，2-是）*/
	@Excel(name = "可否对外招租", width = 15, dicCode = "is_fixed_asset", groupName = "经营状况")
	@Dict(dicCode = "is_fixed_asset")
	private Integer canRent;
	/**已租面积（当前已签约面积，单位：㎡）*/
	@Excel(name = "已租面积（㎡）", width = 15, groupName = "经营状况")
	private BigDecimal rentedArea;
	/**参考租金（单价，单位：元/㎡/月）*/
	@Excel(name = "参考租金（元/㎡/月）", width = 15, groupName = "经营状况")
	private BigDecimal referenceRent;
	/**年度收入（租金或其他收入总额，单位：元）*/
	@Excel(name = "年度收入（元）", width = 15, groupName = "经营状况")
	private BigDecimal annualIncome;


	/**管理单位（物业服务公司名称）*/
	@Excel(name = "管理单位", width = 15, groupName = "物业管理")
	private String propertyCompany;
	/**能源费（元/月/㎡）*/
	@Excel(name = "能源费（元/月/㎡）", width = 15, groupName = "物业管理")
	private BigDecimal energyFee;
	/**车位费（元/月）*/
	@Excel(name = "车位费（元/月）", width = 15, groupName = "物业管理")
	private BigDecimal parkingFee;
	/**物业费单价（元/月/㎡）*/
	@Excel(name = "物业费单价（元/月/㎡）", width = 15, groupName = "物业管理")
	private BigDecimal propertyFeeUnit;
	/**年物业费（年度总费用，单位：元）*/
	@Excel(name = "年物业费(元）", width = 15, groupName = "物业管理")
	private BigDecimal annualPropertyFee;
	/**空房管理费（空置状态下费用，单位：元）*/
	@Excel(name = "空房管理费（元）", width = 15, groupName = "物业管理")
	private BigDecimal vacantManagementFee;


	@Excel(name = "视频监控系统", width = 15, groupName = "关联设施系统")
	private String videoSurveillance;
	@Excel(name = "门禁安防系统", width = 15, groupName = "关联设施系统")
	private String accessControl;
	@Excel(name = "核心动转设备", width = 15, groupName = "关联设施系统")
	private String coreOperationEquipment;
	@Excel(name = "网络情况", width = 15, groupName = "关联设施系统")
	private String networkCondition;
	@Excel(name = "机房", width = 15, groupName = "关联设施系统")
	private String machineRoom;
	@Excel(name = "控制室", width = 15, groupName = "关联设施系统")
	private String controlRoom;
	@Excel(name = "设备房", width = 15, groupName = "关联设施系统")
	private String equipmentRoom;
	@Excel(name = "其他资料", width = 15, groupName = "关联设施系统")
	private String otherData;

	/**备注（补充说明信息）*/
	@Excel(name = "备注", width = 15)
	private String remark;
}
